#ifndef _STORAGE_H_

#define _STORAGE_H_

// 存储设备最大个数
#define STORAGE_DEVICE_NUM_MAX 1

// 存储设备描述体
typedef struct storage_device
{
    // 存储设备的虚拟地址
    unsigned int vAddr;
    // 存储容量
    unsigned int storageBytes;
    // 触发读写的最小字节数
    unsigned int baseBytes;
    // 从存储设备读出数据的函数指针
    int (*DoOut)(struct storage_device *pDevice, unsigned int offset, void *buf, unsigned int bytes);
    // 往存储设备写入数据的函数指针
    int (*DoIn)(struct storage_device *pDevice, unsigned int offset, void *buf, unsigned int bytes);
} sd_t;

// 注册存储设备函数
extern int StorageRegister(sd_t *pDevice, int no);

// 去注册存储设备函数(指定编号)
extern int StorageUnregister(int no);

// 外部可访问的存储设备指针数组
extern sd_t *pStorageDeviceArray[STORAGE_DEVICE_NUM_MAX];

#endif // _STORAGE_H_